var request = require('supertest');
var path = require('path');
var liveServer = require('..').start({
  root: path.join(__dirname, 'data'),
  port: 0,
  open: false,
  cors: true,
});

describe('cors tests', function () {
  it('should respond with appropriate header', function (done) {
    request(liveServer)
      .get('/index.html')
      .set('Origin', 'http://example.com')
      .expect('Content-Type', 'text/html; charset=UTF-8')
      .expect('Access-Control-Allow-Origin', 'http://example.com')
      .expect(/Hello world/i)
      .expect(200, done);
  });
  it('should support preflighted requests', function (done) {
    request(liveServer)
      .options('/index.html')
      .set('Origin', 'http://example.com')
      .set('Access-Control-Request-Method', 'POST')
      .set('Access-Control-Request-Headers', 'X-PINGOTHER')
      .expect('Access-Control-Allow-Origin', 'http://example.com')
      .expect('Access-Control-Allow-Methods', /POST/)
      .expect('Access-Control-Allow-Headers', 'X-PINGOTHER')
      .expect(204, done);
  });
  it('should support requests with credentials', function (done) {
    request(liveServer)
      .options('/index.html')
      .set('Origin', 'http://example.com')
      .set('Cookie', 'foo=bar')
      .expect('Access-Control-Allow-Origin', 'http://example.com')
      .expect('Access-Control-Allow-Credentials', 'true')
      .expect(204, done);
  });
});
